package com.cai;

import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Title: EndMain
 * @Author RuoLi
 * @Package com.cai
 * @Date 2024/1/29 10:34
 * @description: 终止操作
 */
public class EndMain {
    public static void main(String[] args) {
        Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);

        // 1. 用collect方法将流转换为List
        List<Integer> list = stream.collect(Collectors.toList());
        Set<Integer> set = stream.collect(Collectors.toSet());

        // 2. 用forEach方法遍历流中的元素
        stream.forEach(System.out::println);

        // 3. 用findAny方法获取流中的任意一个元素
        Integer integer = stream.findAny().get();

        // 4. 用count方法获取流中的元素个数
        long count = stream.count();

        // 5. 用mapToInt方法将流中的元素转换为int类型，然后求和
        int sum = stream.mapToInt(Integer::intValue).sum();

        // 6. 用min方法获取流中的最小值
        Integer min = stream.min(Comparator.comparing(Integer::intValue)).get();

        // 7. 用max方法获取流中的最大值
        Integer max = stream.max(Comparator.comparing(Integer::intValue)).get();

        // 8. 用anyMatch方法判断流中是否有元素满足条件
        boolean anyMatch = stream.anyMatch(i -> i == 1);

        // 9. 用allMatch方法判断流中是否所有元素都满足条件
        boolean allMatch = stream.allMatch(i -> i > 2);

        // 10. 用noneMatch方法判断流中是否没有元素满足条件
        boolean noneMatch = stream.noneMatch(i -> i > 2);

        // 11. 用reduce方法将流中的元素合并为一个元素
        Optional<Integer> reduce = stream.reduce((i, j) -> i - j);

    }
}
